Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > Sabitler

Sabitler

► Video anlatım

Sabitler, adından da anlaşılabileceği gibi, programlarda kullanılan değiştirilemeyen değerlerdir. Sabitler herhangi bir veri türünden tanımlanabilir. Sabitler genellikle programların başında değişkenlere bir ilk değer atama amacı ile veya farklı ifade oluşumlarının içinde kullanılabilir.

Farklı veri türünden yapılan sabit tanımlamaları aşağıda gösterilmektedir:


21             // int sabiti
35.754         // float sabiti
'B'            // char sabiti
L'B'           // Geniş karakter char sabiti
"Bilgisayar"   // Karakter dizisi sabiti
L"Bilgisayar"  // Geniş karakter dizisi sabiti

char sabitler tırnak işareti, karakter dizisi sabitleri çift tırnak işareti içinde gösterilir. Geniş karakter sabitlerinin önüne L karakteri konur.

Normal koşullarda, derleyici programda verilen sayıların değerine ve yapısına bakarak, hangi veri türüne uygun bir sabit değer olduğunu belirler. Ancak, bazı durumlarda, sabit değerin sonuna bir karakter koyarak, sabit değerin veri türünü belirlemiz gerekir. Kullanılan bu ekler aşağıda gösterilmektedir:

U: int veri türü için

F: float veri türü için

L: long int ve long double veri türü için

LL: long long int veri türü için

float veri çeşidi için, sayının sonuna F harfi koyduğumuzda, sayı float bir sayı olarak, L harfi koyduğumuzda, sayı long double bir sayı olarak ve LL ifadesini koyduğumuzda, sayı long long double bir sayı olarak işlem görür.

int veri çeşidi için, bir sayının sonuna koyulan U harfi sayının unsigned int, L harfi ise long int olarak işlem görmesini sağlar.

Aşağıda farklı veri türlerinden tanımlanmış sabitler yer almaktadır:

Veri türü Sabitler
int 5 -53 24762P
long int 43245L -632L 46875L
short int 29 -621 3041
long long int 127LL -8349LL 7458LL
unsigned int 254U 5427U 23856U
float 51.43F -5.42F 3834.54F
double 8534.26 275.864 -3266.396
long double 21376.2L -7457.25L 573.854L

Şimdi, bir örnekle öğrendiklerimizi incelemeye çalışalım:


#include <stdio.h>

int main(void)
{
  char cd = 'K';
  int id = 21;
  unsigned short int usid = 19423U;
  long int lid = 328461L;
  long long int llid = 8351647LL;
  float fd = 235.824F;
  double dd = 235.824;
  long double ldd = 235.824L;

  printf("%c %d %hu %ld %lld\n", cd, id, usid, lid, llid);
  
  printf("%.3f %.3f %.3Lf %s", fd, dd, ldd, "Bilgisayar");

  return 0;
}

K 21 19423 328461 8351647 235.824 235.824

Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:

K 21 19423 328461 8351647
235.824 235.824 235.824 Bilgisayar

Program 8 farklı veri türündeki değişkene atanan sabit değerleri ve bir karakter dizisini ekrana yazar.

float sayıları 10'un katları çarpanı şeklinde ifade edebiliriz. Örneğin, aşağıdaki her iki ifade de birbirine eşittir:

5687.32 56.8732E2

E2 ifadesi 10 sayısının karesi olarak değerlendirilir. Bu da 56.8732 sayısının 100 ile çarpımı demek olduğundan, satırın sol tarafında yer alan 56.8732 değeri elde edilir.

Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım:


#include <stdio.h>

int main(void)
{
  printf("%.2f %.2f", 334.15, 3.3415E2);
  
  return 0;
}

Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:

334.15 334.15

Program, printf() fonksiyonu ile float sabit değerini iki farklı yapıda ekrana yazar.

C'de, 10'luk sayı sistemi yerine 8'li veya 16'lı sayı sistemi kullanabiliriz. 8'li sayı sistemine OCTAL, 16'lı sayı sistemine ise HEXADECIMAL sayı sistemi adı verilir. 8'li sayı sisteminde 0'dan 7'e kadar olan sayılar kullanılır. Yani, bu sistemde kullanılan en büyük sayı 7 sayısıdır. 16'lı sayı sisteminde ise 0'dan 9'a kadar olan sayılar ve A'dan F'ye kadar olan harfler kullanılır. A'dan F'ye kadar olan harfler sırası ile 10, 11, 12, 13, 14 ve 15 sayılarını temsil ederler:

Sekizli sayı sistemi  : 0 1 2 3 4 5 6 7
Onaltılı sayı sistemi : 0 1 2 3 4 5 6 7 8 9 10 A B C D E F

Sabit değer tanımlaması yaparken 10'luk sayı sistemi yerine, 8'lik veya 16'lık sayı sistemi kullanabiliriz. 16'lık sayı sistemindeki bir sabit 0x (0 rakamı ve x harfi) ile, sekizli sayı sistemindeki sabit ise 0 rakamı ile başlar.

Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım:


#include <stdio.h>

int main(void)
{
  int id = 135;

  printf("id değişken değeri (Onlu): %d\n", id);

  id = 03151; // Sekizli (Onlu=1641)
  printf("id değişken değeri (Sekizli): 0%o\n", id);

  // Onaltılı
  id = 0x1CB; // Onaltılı (Onlu=459)  
  printf("id değişken değeri (Onaltılı): 0x%x", id);

  return 0;
}

Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:

id değişken değeri (Onlu): 135
id değişken değeri (Sekizli): 03151
id değişken değeri (Onaltılı): 0x1cb

Program, sırasıyla onlu, sekizli ve onatılı sayı sisteminde sabit değerler atadığı id değişken değerini ekrana yazar.